 class MyArray {
    array=[];
    size;
     constructor(capacity) {
         this.array = new Array(capacity);
         this.size = 0;
     }

     /**
      * 数组插入元素
      * @param index
      * @param element
      */
     insert(index, element){
         //判断访问下标是否超出范围
         if(index<0 || index>this.size){
             throw new Error("超出数组实际元素范围！");
         }
         //如果实际元素达到数组容量上线，数组扩容
         if(this.size >= this.array.length){
             this.resize();
         }
         //从右向左循环，逐个元素向右挪一位。
         for(let i=this.size-1; i>=index; i--){
             this.array[i+1] = this.array[i];
         }
         //腾出的位置放入新元素
         this.array[index] = element;
         this.size++;
     }
     /**
      * 数组扩容
      */
     resize(){
         this.array.length = this.array.length*2;
     }
     /**
      * 数组删除元素
      * @param index  删除的位置
      */
     delete(index){
         //判断访问下标是否超出范围
         if(index<0 || index>=this.size){
             throw new Error("超出数组实际元素范围！");
         }
         let deletedElement = this.array[index];
         //从左向右循环，逐个元素向左挪一位。
         for(let i=index; i<this.size-1; i++){
             this.array[i] = this.array[i+1];
         }
         this.size--;
         return deletedElement;
     }
     /**
      * 输出数组
      */
     output(){
         for(let i=0; i<this.size; i++){
             console.log(this.array[i])
         }
     }
 }

 function run() {
    const myArray = new MyArray(4);
     myArray.insert(0,3);
     myArray.insert(1,7);
     myArray.insert(2,9);
     myArray.insert(3,5);// 3 7 9 5
     myArray.insert(1,6);// 3 6 7 9 5
     myArray.insert(5,8);// 3 6 7 9 5 8
     myArray.delete(3); // 3 6 7 5 8
     myArray.output();
 }
 run();